home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 2010 April
/
PCWorld0410.iso
/
pluginy Firefox
/
3895
/
3895.xpi
/
chrome
/
compact-ce.jar
/
content
/
setting.js
< prev
next >
Wrap
Text File
|
2009-09-18
|
32KB
|
840 lines
var Setting = {
selected: [
"BookmarksButton-menu", "menuMiddleClickOpens",
"bookmarksMiddleClickOpens", "bookmarksRightClickOpens",
"historyMiddleClickOpens", "historyRightClickOpens"
],
checkbox: [
"hidepopup", "noarrow", "popupmenu",
"compactGoMenu", "altToggle", "hideBorderTop",
"enableHotkey", "toolbarCollapsed"
],
countbox: ["maxCount"],
radiogroup: ["position-menu", "position-bookmarks", "position-history"],
currentList: 0,
currentAvailList: 1,
lists: [
["menubutton-tree", "available-tree", "avail-toolbar-tree"],
["context-tree", "available-tree2", "avail-toolbar-tree2"]
],
updateItem: function(showhide) {
var string = ["bookmarks-menu", "go-menu", "history-menu", "yb_menu", "pof-menu", "ScrapBookMenu", "bookmarksMenu"];
for (var i=0; i<string.length; i++) {
var item = document.getElementsByAttribute("targetId", string[i]);
var adv = CMCE.firefox.getElementById("cmce-adv-restorePoint-"+string[i]);
if (CMCE.firefox.getElementById(string[i])) for (var j=0; j<item.length; j++) {
if (showhide)
item[j].hidden = adv;
else if (adv) {
item[j].firstChild.firstChild.setAttribute("properties", "separator");
item[j].hidden = false;
}
else if (item[j].isAdded) {
if (item[j].getAttribute("empty")) {
item[j].hidden = true;
item[j].firstChild.firstChild.removeAttribute("properties");
}
}
else
item[j].firstChild.firstChild.removeAttribute("properties");
item[j].allwaysDisabled = adv ? true : false;
}
}
},
dialogOncommand: function(event){
var parent = event.target.parentNode.parentNode;
if (parent.tagName == "menulist")
try {
document.getAnonymousElementByAttribute(parent, "class", "menulist-label-box").lastChild.disabled
= event.target.getAttribute("disabled");
} catch(e) {}
var a = event.target.tagName;
if((a == "checkbox" || a == "menuitem" || a == "radio") && !event.target.hasAttribute("apply")) this.enbleApply();
},
cust_loadPrefsDialog: function() {
CMCE.firefox = Custom.getMainWindow();
if (!CMCE.firefox) {
setTimeout(function(){
CMCE.prompts.alert(null, "Personal Menu", document.getElementById("cm-noMainWindowError").label);
window.close();
}, 0);
return;
}
setTimeout(window.focus, 0);
Custom.deleteOrRestoreMenus("restore");
// clone some items in option panel
var positionRaidoBox = document.getElementById("position-menu");
for (var item = positionRaidoBox.parentNode.nextSibling; item; item=item.nextSibling) {
var radioGroup = positionRaidoBox.cloneNode(true);
radioGroup.id = "position-" + item.getAttribute("button");
item.appendChild(radioGroup);
}
document.getElementById("bookmarksRightClickOpens").appendChild(
document.getElementById("bookmarksMiddleClickOpens").firstChild.cloneNode(true)
);
document.getElementById("historyRightClickOpens").appendChild(
document.getElementById("historyMiddleClickOpens").firstChild.cloneNode(true)
);
// load the settings
for (var i=0; i<this.checkbox.length; i++)
document.getElementById(this.checkbox[i]).checked = CMCE.pref.getBoolPref(this.checkbox[i]);
for (var i=0; i<this.countbox.length; i++)
document.getElementById(this.countbox[i]).value = CMCE.pref.getIntPref(this.countbox[i]);
for (var i=0; i<this.radiogroup.length; i++)
document.getElementById(this.radiogroup[i]).selectedIndex = CMCE.pref.getIntPref(this.radiogroup[i]);
var buttonStyle = CMCE.pref.getBoolPref("buttonStyle");
document.getElementById("buttonStyle").selectedIndex = buttonStyle ? 0 : 1;
this.disableSubSetting(!buttonStyle, ["noarrow"]);
this.disableSubSetting(!CMCE.pref.getBoolPref("toolbarCollapsed"), ["altToggle", "hideBorderTop"]);
// disable and hide the unavailable items
var isFX1_5 = CMCE.firefox.getElementById("Tools:Extensions");
var isFX3 = CMCE.firefox.getElementById("placesCommands");
var notFX3 = CMCE.firefox.getElementById("menu_BookmarksPopup");
var history_sub = CMCE.firefox.getElementById("hsub0");
if (history_sub) document.getElementById("history_settings").selectedIndex = 1;
if (isFX1_5 && navigator.oscpu == "Windows NT 6.0") document.getElementById("menu-position").hidden = true;
var id = ["extTabMixPopup", "openHistoryManager", "yb_menu", "pof-menu", "ScrapBookMenu"];
var attr = ["uct", "ehm", "del", "pof", "scrapbook"];
for (var i=0; i<attr.length; i++) {
var extension = CMCE.firefox.getElementById(id[i]);
// the checking for "undo close tab" is different
if (i == 0) extension = extension || CMCE.firefox.getElementById("sessionmanager-menu") || !isFX1_5;
if (!extension) {
var item = document.getElementsByAttribute("attr", attr[i]);
for (var j=0; j<item.length; j++) {
item[j].tooltip = "cm-"+attr[i];
item[j].setAttribute("disabled", true);
}
}
}
// hide the unavailable items that work with specific FX versions
var check = [isFX3, notFX3];
var attr = ["fx3", "not-fx3"];
for (var i=0; i<check.length; i++)
if (!check[i]) {
var item = document.getElementsByAttribute("attr", attr[i]);
for (var j=0; j<item.length; j++) item[j].hidden = true;
}
// remove the "top-right" radio item if the language is right to left, as it does not work normally in not-FX3
if (notFX3 && document.documentElement.getAttribute("chromedir") == "rtl") {
var item = document.getElementById("position-topleft");
item.firstChild.disabled = true;
item.hidden = true;
}
// use this attribute to set some css style for fx3
if (isFX3 && navigator.platform.indexOf("Linux") == -1) document.documentElement.setAttribute("fx3", true);
// apply the tree item icon for fx2 and fx1.5
if (notFX3)
while(true) {
var treecol = document.getElementById("title");
if (treecol) treecol.id = "Name";
else break;
}
// load settings of menulists
for (var i=0; i<this.selected.length; i++) {
var list = document.getElementById(this.selected[i]);
for (var item=list.firstChild.firstChild; item; item=item.nextSibling)
if (item.getAttribute("value") == CMCE.pref.getIntPref(this.selected[i])) {
list.selectedItem = item;
break;
}
try {
document.getAnonymousElementByAttribute(list, "class", "menulist-label-box").lastChild.disabled = item.hasAttribute("disabled");
} catch(e) {}
}
var tree = document.getElementById("available-tree-temp").lastChild;
this.loadMenus(
CMCE.firefox.getElementById("main-menubar"),
tree,
tree.childNodes[4]
);
var toolbars = CMCE.firefox.getElementsByTagName("toolbar");
// for (var i=0; i<toolbars.length; i++)
// if (toolbars[i].id != "FindToolbar" && toolbars[i].id != "aios-toggle-toolbar" && toolbars[i].className != "cm-toolbar")
// this.loadItems(toolbars[i], document.getElementById("avail-toolbar-tree-temp").lastChild, null, false, true);
this.loadItems(CMCE.firefox.getElementById("navigator-toolbox").palette,
document.getElementById("avail-toolbar-tree-temp").lastChild, null, false, true);
this.loadAvailList("available-tree", "available-tree-temp");
this.loadAvailList("available-tree2", "available-tree-temp");
this.loadAvailList("avail-toolbar-tree", "avail-toolbar-tree-temp");
this.loadAvailList("avail-toolbar-tree2", "avail-toolbar-tree-temp");
// load the menu button items list
this.loadList(CMCE.getItemListFromPref("itemlist"), "menubutton-tree", "available-tree", "avail-toolbar-tree");
this.loadList(CMCE.getItemListFromPref("showlist"), "context-tree", "available-tree2", "avail-toolbar-tree2");
// select the tree
if (window.arguments) this.switchList(window.arguments[0]);
},
loadAvailList: function(id, tempId) {
var clone = document.getElementById(tempId).cloneNode(true);
var tree = document.getElementById(id);
clone.id = id;
tree.parentNode.replaceChild(clone, tree);
clone.addEventListener("DOMAttrModified", Setting.onToggleOpen, false);
if (id == "available-tree2")
clone.getElementsByAttribute("targetId", "compact-extra-prefs")[0].setAttribute("targetId", "compact-showhide-prefs");
},
loadMenus: function(menubar, tree, listEnd) {
for (var item=menubar.firstChild; item; item=item.nextSibling) {
if (item.id == "tinymenu" || item.id == "mergedmenu") {
var treeItem = document.getElementById("folder-temp").cloneNode(true);
treeItem.removeAttribute("id");
treeItem.setAttribute("targetId", item.id);
treeItem.firstChild.firstChild.setAttribute("label", item.getAttribute("label"));
tree.insertBefore(treeItem, listEnd);
this.loadMenus(item.firstChild, treeItem.lastChild, null);
treeItem.setAttribute(treeItem.lastChild.hasChildNodes() ? "open" : "empty", true);
}
else if (item.tagName == "menu") this.loadItems(item, tree, listEnd);
else if (item.advRestorePoint) this.loadItems(CMCE.firefox.getElementById(item.oriId), tree, listEnd);
}
},
loadItems: function(parent, tree, listEnd, loadSubmenu, loadToolbar) {
var isNotAvail = false;
if (!loadToolbar) {
var treeItem = document.getElementById("folder-temp").cloneNode(true);
treeItem.removeAttribute("id");
if (parent.id) treeItem.setAttribute("targetId", parent.id);
else {
treeItem.firstChild.firstChild.setAttribute("properties", "separator");
isNotAvail = true;
}
var label = parent.getAttribute("label");
parent = parent.firstChild;
if (!parent) return;
treeItem.firstChild.firstChild.setAttribute("label", label ? label : "( " + parent.id + " )");
tree.insertBefore(treeItem, listEnd);
tree = treeItem.lastChild;
}
for (var item=parent.firstChild; item; item=item.nextSibling) {
try {
if (
item.tagName == "menu" &&
(CMCE.isPureContainer(item) || item.id == "viewFullZoomMenu") &&
CMCE.isPureContainer(item.firstChild) &&
item.className != "menu-iconic bookmark-item"
) {
this.loadItems(item, tree, null, true);
continue;
}
if (
// check for incompatible items
!item.getAttribute("oncommand") && !item.getAttribute("command") && !item.hasChildNodes()
&& !item.getAttribute("onclick") && !item.getAttribute("onmouseup") && !item.getAttribute("onmousedown")
|| item.className == "menuitem-iconic bookmark-item"
|| (item.className == "menu-iconic bookmark-item" && item.id != "bookmarksToolbarFolderMenu")
|| !item.id
// check for known-incompatible toolbar items
|| item.id == "urlbar-container"
|| item.id == "menubar-items"
|| item.id == "search-container"
|| item.id == "ScrapBookEditTitle"
|| item.className == "cm-button"
// now check for known-incompatible items
|| item.id == "bookmarkAllCmd" && !CMCE.firefox.getElementById("placesCommands")
|| item.id == "splitbrowser-syncScroll"
) continue;
treeItem = document.getElementById("item-temp").cloneNode(true);
treeItem.removeAttribute("id");
treeItem.setAttribute("targetId", item.id);
this.setLabel(item, treeItem.firstChild.firstChild);
if (item.tagName == "menu") {
treeItem.setAttribute("container", true);
treeItem.setAttribute("empty", true);
}
tree.appendChild(treeItem);
} catch(e) {}
}
if (isNotAvail && !tree.hasChildNodes()) {
if (isNotAvail) tree.parentNode.parentNode.removeChild(tree.parentNode);
else tree.parentNode.setAttribute("empty", true);
}
},
switchList: function(listId) {
var index = listId == "context-tree" ? 1 : 0;
var panel = document.getElementById("editmenu-panel");
var caption = document.getElementById("editPanelCap");
caption.selectedIndex = index;
panel.setAttribute("currentList", index);
var tree = document.getElementById(listId);
this.currentList = index;
this.currentAvailList =
tree.currentIndex == -1 ||
tree.view.getItemAtIndex(tree.currentIndex).parentNode.parentNode.getAttribute("targetId") != "cm-buttons-box" ?
1 : 2;
panel.setAttribute("availList", this.currentAvailList);
caption.previousSibling.firstChild.value = caption.selectedItem.label;
setTimeout(function(This){
document.getElementById(This.lists[This.currentList][0]).focus();
document.getElementById(This.lists[This.currentList][This.currentAvailList]).focus();
}, 0, this);
},
setSubmenu: function(menu){
var check = {value: false};
var label = {value: menu.firstChild.firstChild.getAttribute("label")}
do CMCE.prompts.prompt(
null, "Personal Menu",
document.getElementById("cm-labelPrompt").label,
label,
null,
check);
while (label.value == "");
if (label.value) menu.firstChild.firstChild.setAttribute("label", label.value);
var key = {value: menu.getAttribute("accesskey")}
if(key.value == "empty") key.value = "";
CMCE.prompts.prompt(
null, "Personal Menu",
document.getElementById("cm-accesskeyPrompt").label,
key,
null,
check);
if (key.value || key.value == "") {
menu.setAttribute("accesskey", key.value ? key.value : "empty");
return true;
}
else return label.value ? true : false;
},
refreshItemAppearance: function(item) {
try {
Components.classes["@mozilla.org/inspector/dom-utils;1"].getService(Components.interfaces["inIDOMUtils"])
.setContentState(item, 4);
} catch(e) {}
},
onToggleOpen: function(event){
if (event.attrName == "open")
if (event.prevValue == "true")
for (var item=event.target.lastChild.firstChild; item; item=item.nextSibling)
item.removeAttribute("open");
else if (event.target.getAttribute("empty") == "true") event.target.removeAttribute("open");
},
updateButtonStatus: function(tree) {
setTimeout( function(tree) {
if (!tree.view) return;
var buttons = document.getElementById("button-box").childNodes;
var select = tree.view.selection.count == 0 ? null : tree.view.getItemAtIndex(tree.currentIndex);
if (tree.id == Setting.lists[Setting.currentList][Setting.currentAvailList])
buttons[1].disabled = !select || select.firstChild.firstChild.getAttribute("properties") == "separator";
else {
buttons[2].disabled = !select || !select.nextSibling;
buttons[4].disabled = !select || !select.previousSibling;
buttons[5].disabled = !select || !select.nextSibling || select.nextSibling.hidden;
buttons[7].disabled = !select || select.parentNode.parentNode.getAttribute("targetId") != "cm-submenu" || !select.nextSibling;
buttons[8].disabled = !select || !select.nextSibling || select.nextSibling.getAttribute("targetId") != "cm-submenu";
buttons[10].disabled = !select || select.getAttribute("targetId") != "cm-submenu";
buttons[10].hidden = select && select.getAttribute("targetId") == "cm-buttons-box";
buttons[11].hidden = !buttons[10].hidden;
}
}, 0, tree);
},
addItem: function(){
var fromTree = document.getElementById(this.lists[this.currentList][this.currentAvailList]);
var fromSelect = fromTree.view.selection.count == 0 ? null : fromTree.view.getItemAtIndex(fromTree.currentIndex);
var toTree = document.getElementById(this.lists[this.currentList][0]);
var toSelect = toTree.view.selection.count == 0 ? null : toTree.view.getItemAtIndex(toTree.currentIndex);
if (!fromSelect || fromSelect.firstChild.firstChild.getAttribute("properties") =="separator") return;
var targetId = fromSelect.getAttribute("targetId");
if (targetId == "----") {
var clone = document.getElementById("separator-temp").cloneNode(true);
clone.removeAttribute("id");
}
else if (targetId == "cm-submenu") {
var clone = document.getElementById("submenu-temp").cloneNode(true);
if (!this.setSubmenu(clone)) return;
clone.removeAttribute("id");
clone.setAttribute("open", true);
var menuend = document.getElementById("submenu-end-temp").cloneNode(true);
menuend.removeAttribute("id");
clone.lastChild.appendChild(menuend);
}
else if (targetId == "cm-buttons-box") {
var clone = document.getElementById("buttonbox-temp").cloneNode(true);
clone.removeAttribute("id");
clone.setAttribute("open", true);
var menuend = document.getElementById("submenu-end-temp").cloneNode(true);
menuend.removeAttribute("id");
menuend.setAttribute("targetId", "cm-buttons-box-end");
clone.lastChild.appendChild(menuend);
window.openDialog('chrome://compact-ce/content/toolbar.xul',
'Customize Toolbar',
'chrome,centerscreen,dialog,modal,close=no',
clone);
}
else if (targetId == "cm-toolbar-spring" || targetId == "cm-toolbar-spacer") {
var clone = document.getElementById(targetId + "-temp").cloneNode(true);
clone.removeAttribute("id");
}
else {
var fromSelectIndex = fromTree.currentIndex;
var fromSelectIsContainer = fromSelect.getAttribute("container") && !fromSelect.getAttribute("empty");
var clone = fromSelect.cloneNode(true);
if (clone.childNodes.length == 2) clone.removeChild(clone.lastChild);
clone.removeAttribute("open");
if (fromSelectIsContainer) {
clone.setAttribute("empty", true);
fromSelect.firstChild.firstChild.setAttribute("properties", "separator");
}
else fromSelect.hidden = true;
fromSelect.isAdded = true;
// set the selection of from-tree
if (fromSelectIsContainer && fromSelectIndex < fromTree.view.rowCount - 1)
fromTree.view.selection.select(fromSelectIndex +
(
fromTree.view.getItemAtIndex(fromSelectIndex + 1).parentNode == fromSelect.parentNode ?
1 : -1
)
);
else if (
fromSelectIndex < fromTree.view.rowCount &&
fromTree.view.getItemAtIndex(fromSelectIndex).parentNode == fromSelect.parentNode
)
fromTree.view.selection.select(fromSelectIndex);
else
fromTree.view.selection.select(fromSelectIndex - 1);
}
if (fromTree.currentIndex >= 0) fromTree.view.selection.tree.ensureRowIsVisible(fromTree.currentIndex);
// append the clone, if to-select is the default item -- "edit this menu", insert before it
if (toSelect) toSelect.parentNode.insertBefore(clone, toSelect.nextSibling ? toSelect.nextSibling : toSelect);
else toTree.lastChild.insertBefore(clone, toTree.lastChild.lastChild);
// if to-select is the default item, hide it
if (clone.parentNode.childNodes.length == 2) clone.nextSibling.hidden = true;
// select the clone, if the clone is submenu, select the default item
toTree.view.selection.select(
toTree.view.getIndexOfItem(
targetId == "cm-submenu" || targetId == "cm-buttons-box" ? menuend : clone
)
);
toTree.view.selection.tree.ensureRowIsVisible(toTree.currentIndex);
this.refreshItemAppearance(fromTree);
this.refreshItemAppearance(toTree);
this.enbleApply();
},
removeItem: function(){
var fromTree = document.getElementById(this.lists[this.currentList][0]);
var select = fromTree.view.selection.count == 0 ? null : fromTree.view.getItemAtIndex(fromTree.currentIndex);
if (
!select ||
select.parentNode.childNodes.length == 1 ||
(select.getAttribute("targetId") == "cm-submenu" || select.getAttribute("targetId") == "cm-buttons-box") &&
!CMCE.prompts.confirm(null, "Personal Menu", document.getElementById("cm-removeSubConfirm").label)
) return;
var toTree = document.getElementById(this.lists[this.currentList][this.currentAvailList]);
var toSelectIndex = -1;
if (select.getAttribute("targetId") == "cm-submenu") {
this.restoreItemsInMenu(select, toTree);
toSelectIndex = 1;
}
else if (select.getAttribute("targetId") == "cm-buttons-box") {
this.restoreItemsInMenu(select, document.getElementById(this.lists[this.currentList][2]));
toSelectIndex = 2;
}
else {
var same = this.restoreItem(select, toTree);
if (same) toSelectIndex = toTree.view.getIndexOfItem(same);
}
if (toSelectIndex > -1) {
toTree.view.selection.select(toSelectIndex);
// toTree.view.selection.tree.ensureRowIsVisible(toSelectIndex);
}
var selectIndex = fromTree.currentIndex;
select.hidden = true;
// show "edit this menu" if the submenu is empty after the remove
if (select.parentNode.childNodes.length == 2) select.nextSibling.hidden = false;
// set the selection of the tree
if (selectIndex == 0)
fromTree.view.selection.select(0);
else if (fromTree.view.getItemAtIndex(selectIndex-1) == select.parentNode.parentNode)
fromTree.view.selection.select(selectIndex);
else if (
selectIndex < fromTree.view.rowCount &&
fromTree.view.getItemAtIndex(selectIndex-1).parentNode != select.parentNode
)
fromTree.view.selection.select(fromTree.view.getIndexOfItem(select.previousSibling));
else
fromTree.view.selection.select(selectIndex-1);
fromTree.view.selection.tree.ensureRowIsVisible(fromTree.currentIndex);
select.parentNode.removeChild(select);
this.refreshItemAppearance(toTree);
this.refreshItemAppearance(fromTree);
this.enbleApply();
},
restoreItemsInMenu: function(menu, toTree) {
for (var item=menu.lastChild.firstChild; item; item=item.nextSibling)
if (item.getAttribute("targetId") == "cm-submenu")
this.restoreItemsInMenu(item, toTree);
else
this.restoreItem(item, toTree);
},
restoreItem: function(item, toTree) {
var same = toTree.getElementsByAttribute("targetId", item.getAttribute("targetId"));
for (var i=0; i<same.length; i++) {
same[i].isAdded = false;
if (same[i].allwaysDisabled) continue;
if (same[i].getAttribute("container") && !same[i].getAttribute("empty"))
same[i].firstChild.firstChild.removeAttribute("properties");
else same[i].hidden = false;
}
return i == 0 ? null : same[i - 1];
},
moveItem: function(move) {
var tree = document.getElementById(this.lists[this.currentList][0]);
var select = tree.view.selection.count == 0 ? null : tree.view.getItemAtIndex(tree.currentIndex);
if (
!select ||
select.parentNode.childNodes.length == 1 ||
move == -1 && !select.previousSibling ||
(move == 1 || move == 2) && select.nextSibling.hidden ||
move == -2 && select.parentNode.parentNode.getAttribute("targetId") != "cm-submenu" ||
move == 2 && select.nextSibling.getAttribute("targetId") != "cm-submenu"
) return;
if (move == -1)
select.parentNode.insertBefore(select, select.previousSibling);
else if (move == 1)
select.parentNode.insertBefore(select.nextSibling, select);
else {
if (move == -2) {
if (select.parentNode.childNodes.length == 2) select.nextSibling.hidden = false;
var parent = select.parentNode.parentNode;
parent.parentNode.insertBefore(select, parent);
} else {
var parent = select.nextSibling.lastChild;
select.nextSibling.setAttribute("open", true);
parent.insertBefore(select, parent.firstChild);
if (parent.childNodes.length == 2) select.nextSibling.hidden = true;
}
}
tree.view.selection.select(tree.view.getIndexOfItem(select));
tree.view.selection.tree.ensureRowIsVisible(tree.currentIndex);
this.refreshItemAppearance(tree);
this.enbleApply();
},
renameItem: function() {
var tree = document.getElementById(Setting.lists[Setting.currentList][0]);
var select = tree.view.selection.count == 0 ? null : tree.view.getItemAtIndex(tree.currentIndex);
if (select && select.getAttribute("targetId") == "cm-submenu" && this.setSubmenu(select))
this.enbleApply();
},
customizeItem: function() {
var tree = document.getElementById(Setting.lists[Setting.currentList][0]);
var select = tree.view.selection.count == 0 ? null : tree.view.getItemAtIndex(tree.currentIndex);
if (select && select.getAttribute("targetId") == "cm-buttons-box") {
window.openDialog(
"chrome://compact-ce/content/toolbar.xul", null,
"chrome,centerscreen,dialog,modal,close=no", select);
this.enbleApply();
}
},
im_exportList: function(button) {
var currentList = this.saveList(this.lists[this.currentList][0]);
var check = {value: false};
var list = {value: currentList};
CMCE.prompts.prompt(
null, button.tooltipText,
button.getAttribute("text1") + "\n" + button.getAttribute("text2"),
list,
null,
check);
if ((list.value || list.value == "") && list.value != currentList) {
this.loadAvailList(this.lists[this.currentList][1], "available-tree-temp");
this.loadAvailList(this.lists[this.currentList][2], "avail-toolbar-tree-temp");
this.loadList(
CMCE.fromStringtoArray(list.value, ","),
this.lists[this.currentList][0],
this.lists[this.currentList][1],
this.lists[this.currentList][2]
);
this.currentAvailList = 1;
document.getElementById("editmenu-panel").setAttribute("availList", 1);
document.getElementById(this.lists[this.currentList][0]).focus();
document.getElementById(this.lists[this.currentList][1]).focus();
this.enbleApply();
}
},
availTreeOndblclick: function(tree) {
var select = tree.view.getItemAtIndex(tree.currentIndex);
if (!select.getAttribute("container") || select.getAttribute("empty")) {
Setting.addItem();
select.removeAttribute("open");
}
},
itemTreeOnselect: function(tree) {
this.currentAvailList =
tree.currentIndex == -1 ||
tree.view.getItemAtIndex(tree.currentIndex).parentNode.parentNode.getAttribute("targetId") != "cm-buttons-box"
?
1 : 2;
document.getElementById("editmenu-panel").setAttribute("availList", this.currentAvailList);
this.updateButtonStatus(document.getElementById(this.lists[this.currentList][this.currentAvailList]));
},
saveSettings: function() {
for (var i=0; i<this.selected.length; i++) CMCE.pref.setIntPref(this.selected[i], document.getElementById(this.selected[i]).value);
for (var i=0; i<this.countbox.length; i++) CMCE.pref.setIntPref(this.countbox[i], document.getElementById(this.countbox[i]).value);
for (var i=0; i<this.checkbox.length; i++) CMCE.pref.setBoolPref(this.checkbox[i], document.getElementById(this.checkbox[i]).checked);
for (var i=0; i<this.radiogroup.length; i++) CMCE.pref.setIntPref(this.radiogroup[i], document.getElementById(this.radiogroup[i]).selectedIndex);
CMCE.pref.setBoolPref("buttonStyle", document.getElementById("buttonStyle").value == 0);
nsPreferences.setUnicharPref("compact.menu.itemlist", this.saveList("menubutton-tree"));
nsPreferences.setUnicharPref("compact.menu.showlist", this.saveList("context-tree"));
if (!CMCE.firefox.getElementById("cmd_CustomizeToolbars").getAttribute("disabled")) {
Custom.unAdv();
CMCE.advMode();
}
Custom.deleteOrRestoreMenus("delete");
CMCE.modifyGoMenu();
CMCE.updateIcon();
CMCE.toolbar = CMCE.firefox.getElementById("toolbar-menubar");
CMCE.toolbar.altToggle = CMCE.pref.getBoolPref("altToggle");
CMCE.toolbar.setAttribute("hideBorderTop", CMCE.pref.getBoolPref("hideBorderTop"));
CMCE.toolbar._collapsed = CMCE.pref.getBoolPref("toolbarCollapsed");
},
saveList: function(listId) {
var string = "";
var item = document.getElementById(listId).lastChild.firstChild;
while (item) {
var id = item.getAttribute("targetId");
if (id) string = string + (string ? "," : "") + id;
else return string;
if (id == "cm-submenu" || id == "cm-buttons-box") {
if (id == "cm-submenu")
string = string + "," + item.firstChild.firstChild.getAttribute("label") + "," + item.getAttribute("accesskey");
else
string = string + "," + item.getAttribute("adv") + "," + item.getAttribute("iconsize") + "," + item.getAttribute("mode");
item = item.lastChild.firstChild;
} else {
if (id == "cm-submenu-end" || id == "cm-buttons-box-end") item = item.parentNode.parentNode;
item = item.nextSibling;
}
}
return string;
},
loadList: function(array, itemTree, availTreeId, availTBTreeId) {
var availItmTree = document.getElementById(availTreeId).lastChild;
var availTBItmTree = document.getElementById(availTBTreeId).lastChild;
var availTree = availItmTree;
var tree = document.getElementById(itemTree);
var clone = document.getElementById("item-tree-temp").cloneNode(true);
tree.parentNode.replaceChild(clone, tree);
clone.id = itemTree;
clone.addEventListener("DOMAttrModified", Setting.onToggleOpen, false);
tree = clone.lastChild;
for (var i=0; i<array.length; i++) {
if (array[i] == "----") {
var treeItem = document.getElementById("separator-temp").cloneNode(true);
treeItem.removeAttribute("id");
tree.appendChild(treeItem);
} else {
if (array[i] == "cm-submenu") {
var treeItem = document.getElementById("submenu-temp").cloneNode(true);
treeItem.removeAttribute("id");
treeItem.firstChild.firstChild.setAttribute("label", array[++i]);
treeItem.setAttribute("accesskey", array[++i]);
tree.appendChild(treeItem);
tree = treeItem.lastChild;
}
else if (array[i] == "cm-submenu-end") {
var treeItem = document.getElementById("submenu-end-temp").cloneNode(true);
treeItem.removeAttribute("id");
if (tree.hasChildNodes()) treeItem.hidden = true;
tree.appendChild(treeItem);
tree = tree.parentNode.parentNode;
}
else if (array[i] == "cm-buttons-box") {
var treeItem = document.getElementById("buttonbox-temp").cloneNode(true);
treeItem.removeAttribute("id");
treeItem.setAttribute("adv", array[++i]);
treeItem.setAttribute("iconsize", array[++i]);
treeItem.setAttribute("mode", array[++i]);
tree.appendChild(treeItem);
tree = treeItem.lastChild;
availTree = availTBItmTree;
}
else if (array[i] == "cm-toolbar-spring" || array[i] == "cm-toolbar-spacer") {
var treeItem = document.getElementById(array[i] + "-temp").cloneNode(true);
treeItem.removeAttribute("id");
tree.appendChild(treeItem);
}
else if (array[i] == "cm-buttons-box-end") {
var treeItem = document.getElementById("submenu-end-temp").cloneNode(true);
treeItem.removeAttribute("id");
treeItem.setAttribute("targetId", "cm-buttons-box-end");
if (tree.hasChildNodes()) treeItem.hidden = true;
tree.appendChild(treeItem);
tree = tree.parentNode.parentNode;
availTree = availItmTree;
}
else if (!array[i]) continue;
else {
var treeItem = document.getElementById("item-temp").cloneNode(true);
treeItem.setAttribute("targetId", array[i]);
treeItem.removeAttribute("id");
var same = availTree.getElementsByAttribute("targetId", array[i])[0];
if (same) {
if (same.getAttribute("container") && !same.getAttribute("empty"))
same.firstChild.firstChild.setAttribute("properties", "separator");
else same.hidden = true;
same.isAdded = true
}
var target = CMCE.firefox.getElementById(array[i]);
if (target) {
this.setLabel(target, treeItem.firstChild.firstChild);
if (target.tagName == "menu") {
treeItem.setAttribute("container", true);
treeItem.setAttribute("empty", true);
}
} else if (same) {
this.setLabel(same.firstChild.firstChild, treeItem.firstChild.firstChild);
} else{
treeItem.firstChild.firstChild.setAttribute("label", "( " + unescape(array[i]) + " )");
treeItem.firstChild.firstChild.setAttribute("properties", "separator");
}
tree.appendChild(treeItem);
}
}
}
treeItem = document.getElementById("submenu-end-temp").cloneNode(true);
treeItem.removeAttribute("id");
treeItem.removeAttribute("targetId");
if (tree.hasChildNodes()) treeItem.hidden = true;
tree.appendChild(treeItem);
},
setLabel: function(item, li) {
var label = item.getAttribute("label");
if (!label) label = item.getAttribute("title");
if (!label) label = "( " + item.id + " )";
if (item.id == "unified-back-forward-button") label = item.firstChild.getAttribute("label") + item.childNodes[1].getAttribute("label");
else if (item.id == "personal-bookmarks") label = CMCE.firefox.getElementById("PersonalToolbar").toolbarName;
li.setAttribute("label", label);
},
warnOnChange: function(el, recommandStatus, textId){
if (el.checked != recommandStatus) {
el.checked = !el.checked;
if (CMCE.prompts.confirm(null, "Personal Menu", document.getElementById(textId).label)) {
this.enbleApply();
el.checked = !el.checked;
}
} else this.enbleApply();
},
disableSubSetting: function(disable, list) {
for(var i = 0; i < list.length; i++) document.getElementById(list[i]).disabled = disable;
},
enbleApply: function() {
document.documentElement._buttons.extra1.removeAttribute("disabled");
}
}